package com.taotaojs.mybootsuper.service2impl;

import com.taotaojs.mybootsuper.bean.BaseBean;
import com.taotaojs.mybootsuper.mapper.MySqlBuild;

import java.util.List;

/**
 * 通用Service的批量操作方法类
 * @author: TaoTaojs
 * @Date: 2020年03月20日15:49:46
 * @Description:
 * 批量操作方法
 * @关联类:
 * @参考链接：
 */
public interface IMyBatchService<T extends BaseBean> {

    /**
     * 批量插入方法
     * @param list
     * @return
     */
    Integer batchInsertObject(List<T> list);
    /**
     * 批量插入方法
     * @param list
     * @param sql
     * @return
     */
    Integer batchInsertObject(List<T> list, MySqlBuild<T> sql);
    /**
     * 批量插入方法
     * @param sql
     * @return
     */
    Integer batchInsert(MySqlBuild<T> sql);


    /**
     * 批量删除方法
     * @param list
     * @return
     */
    Integer batchDeleteObject(List<T> list);
    /**
     * 批量删除方法
     * @param list
     * @param sql
     * @return
     */
    Integer batchDeleteObject(List<T> list, MySqlBuild<T> sql);
    /**
     * 批量删除方法
     * @param sql
     * @return
     */
    Integer batchDelete(MySqlBuild<T> sql);

    /**
     * 批量更新方法
     * @param list
     * @return
     */
    Integer batchUpdateObject(List<T> list);
    /**
     * 批量更新方法
     * @param list
     * @param sql
     * @return
     */
    Integer batchUpdateObject(List<T> list, MySqlBuild<T> sql);
    /**
     * 批量更新方法
     * @param sql
     * @return
     */
    Integer batchUpdate(MySqlBuild<T> sql);

    /**
     * 批量假删除
     * @param list
     * @return
     */
    Integer batchUpdateByDeleteObject(List<T> list);
    /**
     * 批量假删除
     * @param list
     * @param sql
     * @return
     */
    Integer batchUpdateByDeleteObject(List<T> list, MySqlBuild<T> sql);

    /**
     * 全部执行批量操作
     * @param list
     * @param listVO
     * @param listDb
     * @throws RuntimeException
     */
    void batchAll(List<T> list, List<T> listVO, List<T> listDb);

    /**
     * 分批次处理中枢
     * @param list
     * @param sql
     * @param type
     * @return
     */
    int batchProcessingHub(List<T> list, MySqlBuild<T> sql, int type);

}
